草庐IT

c++ - c++14中std::string的运算符后缀

全部标签

【C++】深度剖析string类的底层结构及其模拟实现

文章目录前言1.string的结构2.构造、析构2.1无参构造2.2带参构造2.3问题发现及修改c_stroperator[]析构2.4合二为一——全缺省3.拷贝构造3.1浅拷贝的默认拷贝构造3.2深拷贝拷贝构造的实现4.赋值重载4.1浅拷贝的默认赋值重载4.2深拷贝赋值重载的实现5.string对象的遍历5.1【】(const版本和非const版本)5.2迭代器模拟实现(普通)5.3const迭代器模拟实现6.常见关系运算符重载7.数据插入删除及扩容操作7.1reserve7.2push_back和append7.3+=7.4resize7.5insert7.6erase8.swap和fin

windows - 批处理 : Search for string to skip lines above and write results to new file

我已经成功地编写了一个脚本,它接受一个字符串来在特定文件中搜索,然后输出它第一次出现的行,然后我将该值放入for循环并跳过解析该行数并将其内容写入新文件。但是,我没有得到空行,我发现这些空行很难解决。我要搜索的字符串是“/]”,在它出现的地方缓存行号,然后用逗号分隔将它累积到一个变量中。然后我将该变量再次放入for循环中,并检索第一个出现的值作为我的最终“跳过此行数”变量,然后我在底部使用for循环再次读取该文件并将其值写入一个新文件并跳过文件开头的行数。下面是执行我上面描述的脚本的部分:setlocalenabledelayedexpansionsetlocalenableexten

Java - String.contains() 行为异常

这段代码在我的开发机器上运行良好(使用NetbeansIDE在VirtualBoxjre8上安装的Windows7),但在另一台机器上(Windows7jre8)总是返回true。它应该只查找名称为“town_house.html”的文件,而不是它总是为文件夹中的每个文件返回true。从提示符运行jar文件我没有得到任何异常。也许这只是我通常用C/C++编程的一个小错误……有什么想法吗?for(Filef:files){if(f.toString().contains("_")&&f.toString().contains(".html")){System.out.print("Pro

windows - cmd 相当于 std::string::find_first:of

C++、Java、JavaScript和其他可能的编程语言都有一个字符串函数,可以在字符串中搜索指定字符串模式中的任何字符。例如,C++的std::string::find_first_of像这样工作:std::coutCMD中是否有任何等效项?我尝试搜索“dos字符串函数”,但似乎找不到任何内容。 最佳答案 没有直接的方法,但您可以很容易地编写自己的方法。搜索一个字符@echooffcall:charposition"Searchmeforvowels"aposechoFoundaatposition%pos%goto:eof:c

c++ - 我可以在 std::map 中使用 CComPtr 吗?

我正在用C++在WindowsCOM中编写一个程序,我正在使用CComPtr作为智能指针。我找不到答案的问题是-我可以在std::map中使用CComPtr吗?我有以下代码片段(已简化):std::map>ErrorMap;我希望维护int和IErrorInfo错误信息之间的映射。但是我不确定我是否可以执行以下操作:CComPtrresult;GetErrorInfo(0,&pErrInfo);ErrorMap.insert(std::make_pair(0,result));我担心result智能指针的所有权,以及当ErrorMap被销毁时它是否会正确释放?

c++ - 我应该使用 std::system 来编写单元测试的脚本部分吗?

我的情况是我有一个C++工具的单元测试,其中部分测试需要实际运行一个测试命令行工具(这将触发一些我可以在测试后检查的东西-工具已结束)。我认为我使用的C++单元测试框架非常无关紧要,我的问题与system("test_tool.exe...")的合法使用有关——它会seem那systemisn't在C++开发人员的顶级工具列表中(恕我直言,通常如此)。那么,是否已知system已成功用于单元测试?在UT环境中使用它执行知名工具时,我是否会遇到任何问题? 最佳答案 对我来说,这是可以接受的system用法-但您需要注意“如何检查tes

windows - 名称为 'svn_delta' 的临时文件已在/usr/lib/perl5/vendor_perl/5.14/Git.pm 第 1024 行使用

我正在尝试在svn存储库上将gitsvnclone与cygwin64一起使用,但我不断收到错误消息:Tempfilewithmoniker'svn_delta'alreadyinuseat/usr/lib/perl5/vendor_perl/5.14/Git.pmline1024.如何解决这个问题?Ifoundthisonethat'srelatedtomacs,但我在window上。那里的两个主要答案是:“更改~/.subversion/servers”我不知道它在Windows7中的什么位置。“全面升级到最新的Git(1.8.5应该在下周发布)和最新的SVN1.8可以帮助让事情顺利

windows - SourceTree 1.6.14 在 Windows 上找不到 Git 2.4.0 安装

在我的Windows7系统上安装Git2.4.0后,我尝试将SourceTree1.6.14中的选项更改为“使用系统Git”,而不是嵌入式版本。但是,点击“使用系统Git”后,没有任何反应,设置仍然设置为“使用嵌入式Git”。如何让SourceTree使用安装的Git版本? 最佳答案 这可能会在SourceTree的future补丁中修复,但是,在此之前有如下解决方法。2.0之前的Git版本将git.exe存储在名为bin的子目录中,这正是SourceTree正在寻找的。从Git>=2.0开始,git.exe移动到名为cmd的文件夹

Windows 批处理文件 : Convert Structures into Single Lines Strings

这个艰巨的任务我需要作为一个批处理文件来完成,它不是最难用C做的,但在DOS中是一个hell(至少对我来说!)我需要将一个结构转换为单个var(字符串)能够在我的程序中再次将它们转换为该结构。不要担心卷土重来,它已经完成了。该结构的大小会有所不同,并且在[0]内有一个索引,它需要成为我的var中的第一项。这里是这些结构的一个例子(只有3个):level.waypoints[0]=spawnstruct();level.waypoints[0].origin=(1774.5,834.7,67.6);level.waypoints[0].type="stand";level.waypoin

string - 从命令行 cmd 启动 Windows 10 UWP 应用程序

我希望能够从单个命令行(cmdWindows10)输入启动Windows10UWP应用程序。我在将字符串连接在一起以形成整个包名称时遇到问题(这需要是动态的,因为应用程序的结束字符串可能会随着每次部署而改变)。这是我的逻辑:在LocalAppData目录中找到应用程序包名称(即packageName_postfix)将“!App”附加到#1中结果的末尾将该字符串传递给启动函数:我已经到了可以找到#1的地步,但由于某种原因,当我尝试将它附加到#2时,我得到了NULL值。这是我当前的命令:1.)&2.):GetPackageNameandAppenditto"!App"set"x=|dir